home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / winlib.lzh / WINLIB / ASCII.C < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-09  |  7.4 KB  |  185 lines

  1. /********************************************************************
  2.  *                                                                    *
  3.  *    WinLIB PRO Revision II: ASCII Table                                *
  4.  *    by Ken Hollis                                                    *
  5.  *                                                                    *
  6.  *    Copyright (C) 1994, Bitgate Software                            *
  7.  *                                                                    *
  8.  ********************************************************************/
  9.  
  10. #include "winlib.h"
  11.  
  12. char ppp[1] = "";
  13.  
  14. TEDINFO ascii_tedinfo[] = {
  15.   {" ASCII Table ", ppp, ppp, 3,   0,   2, 4513,   0,  -1,  14,   1},
  16.   {" \x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  17.   {"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  18.   {"\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  19.   {"\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  20.   {"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  21.   {"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  22.   {"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  32,   1},
  23.   {"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", ppp, ppp, 3,   6,   0, 4480,   0,  -1,  33,   1},
  24.   {" Editing type: Numerical ", ppp, ppp,  3,   6,   0, 4480,   0,  -1,  26,   1},
  25.   {"C[ancel", ppp, ppp, 3,   0,   2, 4480,   0,  -2,   8,   1}
  26. };
  27.  
  28. OBJECT ascii_object[] = {
  29.   /* Tree #0*/
  30.   {  -1,   1,   1,0x0014,0x0000,0x0000, (long)(0x00001173L),   0,   0, 549,1551},
  31.   {   0,   2,  13,0x0014,FL3DACT,DRAW3D, (long)(0x00ff1100L), 256, 256,  37,1039},
  32.   {   3,  -1,  -1,(FLYING << 8) + 0x0016,0x0040,0x0000, (long)(&ascii_tedinfo[0]),   0,   0,  37,   1},
  33.   {  12,   4,  11,(BOXFRAME << 8) + 0x001A,FL3DACT|BOXFRAMETITLE,DRAW3D, (long)(" Table "),   1,   3,  35,1033},
  34.   {   5,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[1]),1281,   1,  32,   1},
  35.   {   6,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[2]),1281,   2,  32,   1},
  36.   {   7,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[3]),1281,   3,  32,   1},
  37.   {   8,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[4]),1281,   4,  32,   1},
  38.   {   9,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[5]),1281,   5,  32,   1},
  39.   {  10,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[6]),1281,   6,  32,   1},
  40.   {  11,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[7]),1281,   7,  32,   1},
  41.   {   3,  -1,  -1,0x0015,TOUCHEXIT,0x0000, (long)(&ascii_tedinfo[8]),1281,   8,  32,   1},
  42.   {  13,  -1,  -1,0x0015,0x0000,DRAW3D, (long)(&ascii_tedinfo[9]),   6,1025,  25,   1},
  43.   {   1,  -1,  -1,0x0016,(SELECTABLE|DEFAULT|EXIT|FL3DACT|LASTOB),DRAW3D, (long)(&ascii_tedinfo[10]),   8,1037,  21, 257}
  44. };
  45.  
  46. #define ALINE1   4   /* TEXT in Tree ASCIITAB */
  47. #define ALINE2   5   /* TEXT in Tree ASCIITAB */
  48. #define ALINE3   6   /* TEXT in Tree ASCIITAB */
  49. #define ALINE4   7   /* TEXT in Tree ASCIITAB */
  50. #define ALINE5   8   /* TEXT in Tree ASCIITAB */
  51. #define ALINE6   9   /* TEXT in Tree ASCIITAB */
  52. #define ALINE7   10  /* TEXT in Tree ASCIITAB */
  53. #define ALINE8   11  /* TEXT in Tree ASCIITAB */
  54. #define ASCITYPE 12  /* TEXT in Tree ASCIITAB */
  55. #define ASCICANC 13  /* BOXTEXT in Tree ASCIITAB */
  56.  
  57. OBJECT *asciitable = ascii_object;
  58.  
  59. GLOBAL void WInitAscii(void)
  60. {
  61.     RFix_ObjectPos(asciitable);
  62.     fix_object(asciitable, TRUE);
  63. }
  64.  
  65. LOCAL int WFindChar(int obj, int mx)
  66. {
  67.     int value,offx;
  68.  
  69.     offx = (mx - (asciitable->ob_x + asciitable[obj].ob_x)) / gr_cw;
  70.  
  71.     /* Remember significant digits; rounds up by two with hex... */
  72.     value = (offx + (int)((obj - ALINE1) * 0x20)) - 1;
  73.  
  74.     return(value);
  75. }
  76.  
  77. LOCAL void WAscii_TableSetup(int edittype)
  78. {
  79.     asciitable[ALINE1].ob_state = NORMAL;
  80.     asciitable[ALINE2].ob_state = NORMAL;
  81.     asciitable[ALINE3].ob_state = NORMAL;
  82.     asciitable[ALINE4].ob_state = NORMAL;
  83.     asciitable[ALINE5].ob_state = NORMAL;
  84.     asciitable[ALINE6].ob_state = NORMAL;
  85.     asciitable[ALINE7].ob_state = NORMAL;
  86.     asciitable[ALINE8].ob_state = NORMAL;
  87.  
  88.     if ((edittype!=E_ANY) && (edittype!=E_SPECIAL)) {
  89.         asciitable[ALINE1].ob_state |= DISABLED;
  90.         asciitable[ALINE2].ob_state |= DISABLED;
  91.         asciitable[ALINE3].ob_state |= DISABLED;
  92.         asciitable[ALINE4].ob_state |= DISABLED;
  93.         asciitable[ALINE5].ob_state |= DISABLED;
  94.         asciitable[ALINE6].ob_state |= DISABLED;
  95.         asciitable[ALINE7].ob_state |= DISABLED;
  96.         asciitable[ALINE8].ob_state |= DISABLED;
  97.     }
  98.  
  99.     if (edittype == E_SPECIAL) {
  100.         asciitable[ALINE2].ob_state |= DISABLED;
  101.         asciitable[ALINE3].ob_state |= DISABLED;
  102.         asciitable[ALINE4].ob_state |= DISABLED;
  103.     }
  104.  
  105.     switch(edittype) {
  106.         case E_NUMERIC:
  107.             ChangeObjectText(asciitable, ASCITYPE, "Numeric editing field", 3, TE_CNTR);
  108.             asciitable[ALINE2].ob_state &= ~DISABLED;
  109.             break;
  110.  
  111.         case E_UP_ASCII:
  112.             ChangeObjectText(asciitable, ASCITYPE, "Uppercase ASCII chars", 3, TE_CNTR);
  113.             asciitable[ALINE3].ob_state &= ~DISABLED;
  114.             break;
  115.  
  116.         case E_LOW_ASCII:
  117.             ChangeObjectText(asciitable, ASCITYPE, "Lowercase ASCII chars", 3, TE_CNTR);
  118.             asciitable[ALINE3].ob_state &= ~DISABLED;
  119.             asciitable[ALINE4].ob_state &= ~DISABLED;
  120.             break;
  121.  
  122.         case E_UP_NUMERIC:
  123.             ChangeObjectText(asciitable, ASCITYPE, "Uppercase alphanumeric", 3, TE_CNTR);
  124.             asciitable[ALINE2].ob_state &= ~DISABLED;
  125.             asciitable[ALINE3].ob_state &= ~DISABLED;
  126.             break;
  127.  
  128.         case E_LOW_NUMERIC:
  129.             ChangeObjectText(asciitable, ASCITYPE, "Alphanumeric characters", 3, TE_CNTR);
  130.             asciitable[ALINE2].ob_state &= ~DISABLED;
  131.             asciitable[ALINE3].ob_state &= ~DISABLED;
  132.             asciitable[ALINE4].ob_state &= ~DISABLED;
  133.             break;
  134.  
  135.         case E_UP_PATH:
  136.             ChangeObjectText(asciitable, ASCITYPE, "Uppercase path chars", 3, TE_CNTR);
  137.             asciitable[ALINE2].ob_state &= ~DISABLED;
  138.             asciitable[ALINE3].ob_state &= ~DISABLED;
  139.             break;
  140.  
  141.         case E_LOW_PATH:
  142.             ChangeObjectText(asciitable, ASCITYPE, "Lowercase path chars", 3, TE_CNTR);
  143.             asciitable[ALINE2].ob_state &= ~DISABLED;
  144.             asciitable[ALINE3].ob_state &= ~DISABLED;
  145.             asciitable[ALINE4].ob_state &= ~DISABLED;
  146.             break;
  147.  
  148.         case E_ANY:
  149.             ChangeObjectText(asciitable, ASCITYPE, "All characters allowed", 3, TE_CNTR);
  150.             break;
  151.  
  152.         case E_SPECIAL:
  153.             ChangeObjectText(asciitable, ASCITYPE, "All control characters", 3, TE_CNTR);
  154.             break;
  155.     }
  156. }
  157.  
  158. GLOBAL int WAscii_Table(int edittype)
  159. {
  160.     int ex,currchar,mx,d;
  161.  
  162.     WAscii_TableSetup(edittype);
  163.     showdialog(asciitable);
  164.     ex = dodialog(VDIhandle, asciitable, FALSE, TRUE);
  165.     switch(ex) {
  166.         case ALINE1:
  167.         case ALINE2:
  168.         case ALINE3:
  169.         case ALINE4:
  170.         case ALINE5:
  171.         case ALINE6:
  172.         case ALINE7:
  173.         case ALINE8:
  174.             graf_mkstate(&mx,&d,&d,&d);
  175.             currchar = WFindChar(ex, mx);
  176.             break;
  177.  
  178.         case ASCICANC:
  179.             currchar = 0;
  180.             break;
  181.     }
  182.     enddialog(asciitable);
  183.  
  184.     return currchar;
  185. }